home *** CD-ROM | disk | FTP | other *** search
/ PC Media 22 / PC MEDIA CD22.iso / share / prog / spm220e / demo_lib.asm < prev    next >
Assembly Source File  |  1995-08-28  |  6KB  |  193 lines

  1. ;   DEMO_LIB.ASM: A simple demo. of how to use SCLIB.OBJ. DEMO_LIB.EXE write
  2. ; on screen all the bytes received from the serial port: (format: 9600,N,8,1)
  3. ; until a key is pressed on the keyboard...
  4. ;   (C)1995 HETRU F. ----- for SERIAL MANAGER v2.11 ----- 08/28/95
  5. ; (Read STAR_REF.DOC to identify the functions numbers and their associated
  6. ; parameters...).
  7. ; ---------------
  8. ; To compile DEMO_LIB:      x> masm demo_lib;      (or: tasm...)
  9. ;                           x> link demo_lib+sclib;
  10.  
  11.  
  12. com      equ    0               ;0 à 7 for COM1: à COM8:...
  13.  
  14.  
  15. FALSE    equ    0
  16. TRUE     equ    1
  17.  
  18.  
  19. ;ACTIVATE THIS CODE TO TEST THE USE OF EXTERNALS BUFFERS...
  20. ;buffers  segment
  21. ;buff     db 10240 dup(0)
  22. ;buffers  ends
  23.  
  24.  
  25. code     segment public
  26.          assume cs:code,ds:code,es:NOTHING
  27.  
  28. extrn    Set_SCL:far
  29. extrn    UnSetSCL:far
  30. extrn    SCLservs:far
  31.  
  32. BreakAction proc far
  33. ;Ask for the end of the process when "Ctrl-Brk" or ^C is entered !...
  34.          mov    cs:Abort,TRUE
  35.          iret
  36. BreakAction endp
  37.  
  38. ItoA     proc   near
  39. ;Transcripts the AX "Signed" integer into a characters string in "Astr".
  40.          mov    Aindex,0
  41.          cmp    signed,TRUE
  42.          jne    DoIt
  43.          cmp    ax,0
  44.          jge    DoIt
  45.          push   ax
  46.          mov    al, '-'
  47.          call   PutIt
  48.          pop    ax
  49.          neg    ax
  50.          DoIt:
  51.          call   PutI2
  52.          ret
  53. ;Recursive under-function to transcript the AX integer into an ASCII string.
  54. PutI2:   mov    bx,10
  55.          xor    dx,dx
  56.          div    bx
  57.          or     ax,ax
  58.          jz     Done
  59.          push   dx
  60.          call   PutI2
  61.          pop    dx
  62.          Done:
  63.          mov    al,dl
  64.          or     al,'0'
  65.          call   PutIt
  66.          ret
  67. ;Writes the AL character into the "Astr" buffer. Adds '$' to make
  68. ;the string end and increments "Aindex".
  69. PutIt:   mov    di,Aindex
  70.          mov    Astr[di],al
  71.          mov    byte ptr Astr+1[di],'$'
  72.          inc    Aindex
  73.          ret
  74. ItoA     endp
  75.  
  76. main     proc   far
  77.          push   cs
  78.          pop    ds
  79.          ;
  80.          mov    ah,25h          ;Ctrl-Break divertion...
  81.          mov    al,23h
  82.          mov    dx,offset BreakAction
  83.          int    21h
  84.          ;
  85.          call   Set_SCL         ;Activate the library's driver.
  86.          ;
  87.          mov ax,0900h           ;Auto. scan, and activation, of the IRQ
  88.          mov dx,com             ;associated to the "com" port...
  89.          call SCLservs
  90.            ;OR:  int    14h
  91.          mov ax,0901h
  92.          mov dx,com
  93.          mov ch,'A'
  94.          mov cl,14
  95.          call SCLservs
  96.            ;OR:  int    14h
  97.          ;
  98.          mov    ah,7
  99.          mov    al,0
  100.            ;ACTIVATE THIS CODE TO TEST THE USE OF EXTERNALS BUFFERS...
  101.            ;mov    al,6
  102.            ;mov    bx,buffers
  103.            ;mov    es,bx
  104.            ;mov    di,offset buff
  105.            ;mov    bx,6144         ;Receipt buffer size.
  106.            ;mov    cx,4096         ;Transmit buffer size.
  107.          mov    dx,com
  108.          call   SCLservs        ;Opens the "com" serial port.
  109.            ;OR:  int    14h
  110.          jc     erreur_op
  111.          ;
  112.          mov    ah,0bh          ;Writes on screen the buffers sizes, after
  113.          mov    dx,com          ;asking them to the driver.
  114.          mov    bx,0000010000000010b
  115.          int    14h
  116.          push   cx
  117.          mov    ax,bx
  118.          call   ItoA
  119.          mov    dx,offset BuffIn
  120.          mov    ah,9
  121.          int    21h
  122.          mov    dx,offset Astr
  123.          mov    ah,9
  124.          int    21h
  125.          mov    dx,offset NLine
  126.          mov    ah,9
  127.          int    21h
  128.          pop    cx
  129.          mov    ax,cx
  130.          call   ItoA
  131.          mov    dx,offset BuffOut
  132.          mov    ah,9
  133.          int    21h
  134.          mov    dx,offset Astr
  135.          mov    ah,9
  136.          int    21h
  137.          mov    dx,offset NLine
  138.          mov    ah,9
  139.          int    21h
  140.          ;
  141.          mov    ah,0
  142.          mov    al,0E3h
  143.          mov    dx,com
  144.          call   SCLservs        ;Initialization: format 9600,N,8,1
  145.            ;OR:  int    14h
  146.          next:
  147.          mov    ah,16h
  148.          mov    dx,com
  149.          call   SCLservs        ;Reading one byte with NO wait...
  150.            ;OR:  int    14h
  151.          cmp    ah,0
  152.          jne    dont_write
  153.          mov    bx,0007h
  154.          mov    ah,0eh
  155.          int    10h             ;Write each received byte.
  156.          dont_write:
  157.          cmp    Abort,TRUE
  158.          je     ToEnd
  159.          mov    ah,0Bh
  160.          int    21h
  161.          cmp    al,0
  162.          je     next            ;Stop as soon as a key has been pressed.
  163.          mov    ah,08h
  164.          int    21h
  165.          ToEnd:
  166.          ;
  167.          call   UnSetSCL        ;Driver un-activation AND END...
  168.          mov    ax,4C00h        ;...with ERRORLEVEL=0 !
  169.          int    21h
  170.          erreur_op:
  171.          call   UnSetSCL        ;Driver un-activation AND END...
  172.          mov    al,com
  173.          add    al,31h
  174.          mov    ErrOpen[27],al
  175.          mov    dx,offset ErrOpen
  176.          mov    ah,09h
  177.          int    21h
  178.          mov    ax,4C01h        ;...with ERRORLEVEL=1 !
  179.          int    21h
  180. main     endp
  181.  
  182. Abort    db     FALSE
  183. Signed   db     FALSE
  184. Aindex   dw     0
  185. Astr     db     8 dup ('$')
  186. NLine    db     0Dh,0Ah,'$'
  187. BuffIn   db     "Input buffer size:  $"
  188. BuffOut  db     "Output buffer size: $"
  189. ErrOpen  db     'Unable to open the port COM :',0Dh,0Ah,'$'
  190.  
  191. code     ends
  192.          end    main
  193.